package com.dao;


import com.domain.actPlan;
import com.utils.JDBCUtils;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;

import java.util.List;

public class actPlanDao {
    //创建jdbcTemplate对象
    private JdbcTemplate jdbcTemplate = new JdbcTemplate(JDBCUtils.getDataSource());

    /**
     * 增加参加活动客户
     * @param act 传入actPlan类型的对象
     * @return 返回Integer类型的数据，1为成功，0为失败
     */
    public Integer addActPlan(actPlan act){
        //添加语句
        String sql="INSERT INTO actplan VALUES(null,?,?,?,?,?,?)";
        int update = jdbcTemplate.update(sql,
                act.getUserId(),
                act.getActivityId(),
                act.getSignin(),
                act.getResult(),
                act.getFeedback(),
                act.getDegree());
        return update;
    }

    /**
     * 增加客户报名数据
     * @param userId  传入Integer类型的客户id
     * @param activityId 传入Integer类型的活动id
     * @return 返回Integer类型的数据，1为成功，0为失败
     */
    public Integer addActPlan(Integer userId ,Integer activityId){
        //添加语句
        String sql="INSERT INTO actplan VALUES(null,?,?,null,null,null,null)";
        int update = jdbcTemplate.update(sql,userId,activityId);
        return update;
    }

    /**
     * 根据客户的id 和 活动 id 删除一条数据
     * @param userId 传入Integer类型的用户id
     * @param activityId 传入Integer类型的活动id
     * @return 返回Integer类型的数据，1为成功，0为失败
     */
    public Integer deleteUserAct(Integer userId ,Integer activityId){
        //删除语句
        String sql="delete from actPlan where userId=? and activityId=?";
        //进行执行
        int update = jdbcTemplate.update(sql, userId ,activityId);
        //返回结果
        return update;
    }

    /**
     * 根据客户的id 删除所有活动
     * @param userId 传入Integer类型的用户id
     * @return 返回Integer类型的数据，1为成功，0为失败
     */
    public Integer deleteUserAllAct(Integer userId){
        //删除语句
        String sql="delete from actPlan where userId=?";
        //进行执行
        int update = jdbcTemplate.update(sql, userId);
        //返回结果
        return update;
    }


    /**
     * 根据客户id和 活动id 更新数据
     * @param act 传入actPlan类型的对象
     * @return 返回Integer类型的数据，1为成功，0为失败
     */
    public Integer updateActPlan(actPlan act){
        String sql="update actPlan set actplanId=?,signin=?,result=?,feedback=?,degree=? where userId=? and activityId=?";
        int update = jdbcTemplate.update(sql,
                act.getActPlanId(),
                act.getSignin(),
                act.getResult(),
                act.getFeedback(),
                act.getDegree(),
                act.getUserId(),
                act.getActivityId());
        return update;
    }

    /**
     * 查询方法,查询actPlan表的所有数据
     * @return 返回List类型的数据
     */
    public List<actPlan> findAllActPlan(){
        //SQl
        String sql="select * from actPlan";
        List<actPlan> list = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(actPlan.class));
        return list;
    }

    /**
     * 按照活动id查询所有
     * @param userId 传入Integer类型的用户编号
     * @param activityId 传入integer类型的活动编号
     * @return 返回actPlan类型的对象
     */
    public actPlan findUserAct(Integer userId,Integer activityId){
        //sql
        String sql="select * from actPlan where userId =? and activityId=?";
        //进行查询
        List<actPlan> list = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(actPlan.class),userId,activityId);
        if (list==null || list.size()==0){
            return null;
        }
        return list.get(0);
    }

}
